export function formatDate(value, fmt,monthBl) {
  // 对Date的扩展，将 Date 转化为指定格式的String
  // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
  // 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  // 例子：
  // formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss.S') ==> 2006-07-02 08:09:04.423
  // formatDate(new Date(), 'yyyy-M-d h:m:s.S') ==> 2006-7-2 8:9:4.18
  fmt || (fmt = 'yyyy-MM-dd');
  if(monthBl){ //获取前一个月
    value.setMonth(value.getMonth()-1);
  }
  const o = {
    'M+': value.getMonth() + 1, // 月份
    'd+': value.getDate(), // 日
    'h+': value.getHours(), // 小时
    'm+': value.getMinutes(), // 分
    's+': value.getSeconds(), // 秒
    'q+': Math.floor((value.getMonth() + 3) / 3), // 季度
    'S' : value.getMilliseconds() // 毫秒
  };
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (value.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  for(let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((`00${o[k]}`).substr(('' + o[k]).length)));
    }
  }
  return fmt;
}
export function formatSeconds(value, word) {
  if (!value && value !== 0) {
    return ''
  }
  let theTime = parseInt(value, 10);// 秒
  let theTime1 = 0;// 分
  let theTime2 = 0;// 小时
  // alert(theTime);
  if(theTime > 60) {
      theTime1 = parseInt(theTime / 60, 10);
      theTime = parseInt(theTime % 60, 10);
      // alert(theTime1+"-"+theTime);
      if(theTime1 > 60) {
          theTime2 = parseInt(theTime1 / 60, 10);
          theTime1 = parseInt(theTime1 % 60, 10);
      }
  }
  let result = ('' + parseInt(theTime, 10)).padStart(2, 0) + (word ? '秒' : '');
  if(theTime1 > 0) {
    result = ('' + parseInt(theTime1, 10)).padStart(2, 0) + (word ? '分' : ':') + result;
  } else {
    result = '00' + (word ? '分' : ':') + result;
  }
  if(theTime2 > 0) {
    result = '' + parseInt(theTime2, 10) + (word ? '时' : ':') + result;
  }
  return result;
}

export function formatFileSize(filesize){
  if (!filesize) {
    return filesize === 0 ? '0Bytes' : '';
  }
  const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
  const srcsize = parseFloat(filesize);
  const index = Math.floor(Math.log(srcsize) / Math.log(1024));
  const size = srcsize / Math.pow(1024, index);
  return size.toFixed(2) + unitArr[index];
}

export function parseQueryString(url) {
  const obj = {};
  const str = url.substr(url.indexOf('?') + 1);
  const arr = str.split('&');
  for(let i = 0; i < arr.length; i++) {
    const arr2 = arr[i].split('=');
    obj[arr2[0]] = arr2[1];
  }
  return obj;
}

export function parseQueryParams(params, mark) {
  // eslint-disable-next-line
  mark || (mark = '&')
  const str = [];
  for (const p in params) {
    str.push(`${p}=${typeof params[p] === 'object' ? params[p][0] : params[p]}`)
  }
  return `${str.join(mark)}`;
}

export function checkRegular(value, type) {
  if (value) {
    switch (type) {
      case 'email':
        return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
      case 'mobile':
        return /^1(3|4|5|7|8)\d{9}$/.test(value);
      case 'date':
        return /\d{4}-\d{2}-\d{2}/.test(value);
      default:
        return true
    }
  }
  return true
}

export function dataURItoBlob(base64Data) {
  let byteString;
  if (base64Data.split(',')[0].indexOf('base64') >= 0) {
    byteString = atob(base64Data.split(',')[1]);
  } else {
    byteString = unescape(base64Data.split(',')[1]);
  }
  const mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
  //处理异常,将ascii码小于0的转换为大于0
  const ab = new ArrayBuffer(byteString.length);
  const ia = new Uint8Array(ab);
  for (let i = 0; i < byteString.length; i++) {
      ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ab], {type: mimeString});
}

export function getBase64(img, callback) {
  const reader = new FileReader();
  reader.addEventListener('load', () => callback(reader.result));
  reader.readAsDataURL(img);
}

export function sameElement(arr1,arr2){
  return arr1.some((x)=>(
    arr2.includes(x)
  ))
}